package com.designPattern.proxy.staticproxy;

/**
 * 【代理模式】
 * 【静态代理】
 * 【解决问题】增强某个类中的方法
 * 【重点】代理类和被代理类都需要实现同一个接口
 * 【基本思路】通过让被增强类 和 代理类实现实现同一个接口
 * 让代理类去聚合实现的类
 * 在代理类中通过代用被增强的类，在同名的方法中调用需要被增强的方法，同事增加需要额外实现的功能
 * 【优点】在不修改目标对象的功能前提下，能通过代理对象对目标功能进行拓展
 * 【不足】因为代理对象需要与目标对象实现一样的接口，所以会有很多代理类
 * 一旦接口增强方法，目标对象和代理对象都需要维护
 */
public class Client {
    public static void main(String[] args) {
        ProxyTeacherDao proxyTeacherDao = new ProxyTeacherDao(new TeacherDao());
        proxyTeacherDao.teach();
    }
}
